package com.example.util;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

import java.util.concurrent.TimeUnit;

/**
 * token缓存
 * liangzai
 */
public class CacheTokenUtil {
    private static final long MINUTES = 1;// 用户15分钟内没读/写token，则缓存回收
    private static final long SIZE = 100;// 最大缓存数量
    private static final Cache<String, String> cache;

    static {
        cache = CacheBuilder.newBuilder().maximumSize(SIZE).expireAfterAccess(MINUTES, TimeUnit.MINUTES).build();
    }

    /**
     * 增加缓存对象
     *
     * @param token
     * @param userid
     */
    public static void add(String token, String userid) {
        cache.put(token, userid);
    }

    /**
     * 获取缓存对象
     *
     * @param token
     * @return
     */
    public static String get(String token) {
        return cache.getIfPresent(token);
    }

    /**
     * 删除缓存
     *
     * @param token
     */
    public static void remove(String token) {
        cache.invalidate(token);
    }

    /**
     * 清除全部缓存
     */
    public static void clear() {
        cache.invalidateAll();

    }
}